/* 
 * File:   struct_strings.h
 * Author: kedzior
 *
 * Created on 8 maj 2011, 22:12
 */

#ifndef STRUCT_STRINGS_H
#define	STRUCT_STRINGS_H

#ifdef	__cplusplus
extern "C" {
#endif

    #include "main_h.h"

    typedef struct string_cell {
            char *name_sc; 					// nazwa zmiennej
            char *val_sc; 					// wartosc tekstowa zmiennej
            unsigned int len_sc; 			// dlugosc zm.
            unsigned int pos_sc; 			// pozycja w ciagu glownym (we)
            struct string_cell *next_sc; 	// nastepna zmienna
    } *string_cell_t;

    typedef struct string_main {
            char *name_sm;					// nazwa ciagu glownego (we)
            char *val_sm;					// wartosc ciagu glownego
            unsigned int len_sm;			// dl. c. glownego
            unsigned int len_cells;			// ilosc komorek
            struct string_cell *guard;		// wartownik
            struct string_cell *current_sc;	// aktualna komorka
            struct string_cell *first_sc;	// pierwsza komorka
            struct string_cell *last_sc;	// ostatnia komorka - nieuzywane
            struct string_main *next_sm;	// nastepny ciag
    } *string_main_t;

    typedef struct string_global {
            unsigned int glen;				// reserved
            string_main_t start;			// wskaznik do wszystkich ciagow tekstowych
    } *string_global_t;

    string_global_t     global_strings;
    string_main_t	global_current_sm;
    string_cell_t	global_current_sc;
    char                *empty_string;

    string_main_t explode(char *,char *);

#ifdef	__cplusplus
}
#endif

#endif	/* STRUCT_STRINGS_H */
